/**
 * Created by S on 2016/3/21.
 */
var administratorProxy =require('../proxy/administratorProxy');
var tools = require("../common/tool");
var async = require("async");

exports.insertuser=function(req,res,callback){
    var param = req.body;
    var options={};
    var str="";
    async.waterfall([checkParam,checkrepeat,insertdata], function (error, result) {
        res.send(JSON.parse(tools.ResponseFormat(error, result)));
    });
    //检测参数
    function checkParam(cb) {
        if (param.username==undefined) {
            cb("username不能为空！", null);
            return;
        }
        else
        {
            if(typeof (param.username)=='string')
            {
                str=param.username;
            }
            else
            {
                str=String(param.username);
            }
            if(str.length<5)
            {
                cb('用户名太短',null);
                return;
            }
            else if(tools.checkQuote(str))
            {
                cb('用户名不能包含特殊符号',null);
                return;
            }
            else
            {
                options['username']=param.username;
            }
        }
        if (param.password==undefined) {
            cb("password不能为空！", null);
            return;
        }
        else
        {
            if(typeof (param.password)=='string')
            {
                str=param.password;
            }
            else
            {
                str=String(param.password);
            }
            if(str.length<5)
            {
                cb('密码太短',null);
                return;
            }
            else if(tools.checkQuote(str))
            {
                cb('密码不能包含特殊符号',null);
                return;
            }
            else
            {
                options['password']=param.password;
            }
        }
        cb(null, null);
    }
    function checkrepeat(datas,cb)
    {
        administratorProxy.finduser({username:options.username},function(err,data){
            if(err)
            {
                cb(err,null);
            }
            else if(!data || data.length<=0)
            {
                cb(null,null);
            }
            else
            {
                cb('用户已存在',null);
            }

        });
    }
    function insertdata(datas,cb)
    {
        administratorProxy.insertuser(options,function(err,data){
            if(err)
            {
                cb(err,null);
            }
            else
            {
                cb(null,'添加成功');
            }
        })
    }
}
//用户登陆
exports.loginuser = function (req, res,callback) {
    var param = req.body;
    var options={};
    async.waterfall([checkParam,checkEmpty,search], function (error, result) {
        res.send(JSON.parse(tools.ResponseFormat(error, result)));
    });
    //检测参数
    function checkParam(cb) {
        if (param.username==undefined) {
            cb("username不能为空！", null);
            return;
        }
        else
        {
            options['username']=param.username;
        }
        if (param.password==undefined) {
            cb("password不能为空！", null);
            return;
        }
        else
        {
            options['password']=param.password;
        }
        cb(null, null);
    }
    //表是否为空
    function checkEmpty(datas,cb)
    {
        administratorProxy.finduser({},function(err,data){

            if(err)
            {
                cb(err,null);
            }
            else if(!data || data.length<=0)
            {
                administratorProxy.insertuser({username:'admin',password:'123456'},function(err,data){
                    if(err)
                    {
                        cb(err,null);
                    }
                    else
                    {
                        cb(null,null);
                    }
                });
            }
            else
            {
                cb(null,null);
            }
        });
    }
    //查找
    function search(datas,cb)
    {
        administratorProxy.finduser(options,function (err, data) {
            if(err)
            {
                cb(err,null);
            }
            else if(!data || data.length<=0)
            {
                cb('用户名或密码错误',null);
            }
            else if(data[0].username!=param.username || data[0].password!=param.password)
            {
                cb('用户名或密码错误',null);
            }
            else
            {
                cb(null,data);
            }
        });
    }
};

//修改密码
exports.changeinfo=function(req,res,callback){
    var param=req.body;
    var str="";
    async.waterfall([checkParam,checkExist,search,change],function(error,result){
        res.send(JSON.parse(tools.ResponseFormat(error,result)));
    });
    //检查参数
    function checkParam(cb)
    {
        if(!tools.isInteger(param.id))
        {
            cb('id不能为空',null);
            return;
        }
        if(param.oldpassword==undefined)
        {
            cb('旧密码不能为空',null);
            return;
        }
        else
        {
            if(typeof (param.oldpassword)=='string')
            {
                str=param.oldpassword;
            }
            else
            {
                str=String(param.oldpassword);
            }
            if(str.length<5)
            {
                cb('旧密码太短',null);
                return;
            }
            else if(tools.checkQuote(str))
            {
                cb('旧密码包含特殊符号',null);
                return;
            }
        }
        if(param.newpassword==undefined)
        {
            cb('新密码不能为空',null);
            return;
        }
        else
        {
            if(typeof (param.newpassword)=='string')
            {
                str=param.newpassword;
            }
            else
            {
                str=String(param.newpassword);
            }
            if(str.length<5)
            {
                cb('新密码太短',null);
                return;
            }
            else if(tools.checkQuote(str))
            {
                cb('新密码包含特殊符号',null);
                return;
            }
        }
        cb(null,null);
    }
    //是否存在
    function checkExist(datas,cb)
    {
        administratorProxy.finduser({id:param.id},function (err, data) {
            if(err)
            {
                cb(err,null);
            }
            else if(!data || data.length<=0)
            {
                cb('项目不存在',null);
            }
            else
            {
                cb(null,null);
            }
        });
    }
    //查找旧密码
    function search(datas,cb)
    {
        administratorProxy.finduser({id:param.id,password:param.oldpassword},function (err, data) {
            if(err)
            {
                cb(err,null);
            }
            else if(!data || data.length<=0)
            {
                cb('旧密码错误',null);
            }
            else
            {
                cb(null,null);
            }
        });
    }
    //修改信息
    function change(datas,cb)
    {
        administratorProxy.changeuser({id:param.id,password:param.newpassword},function(err,data){
            if(err)
            {
                cb(err,null);
            }
            else
            {
                cb(null,'修改成功');
            }
        });
    }
}

exports.deleteuser=function(req,res,callback){
    var param=req.body;
    var option={};
    async.waterfall([checkParam,checkExist,deletes],function(error,result){
        res.send(JSON.parse(tools.ResponseFormat(error,result)));
    });
    function checkParam(cb)
    {
        if(!tools.isInteger(param.id))
        {
            cb('id不能为空',null);
        }
        else
        {
            option['id']=param.id;
            cb(null,null);
        }
    }
    //是否存在
    function checkExist(datas,cb)
    {
        administratorProxy.finduser({id:option.id},function (err, data) {
            if(err)
            {
                cb(err,null);
            }
            else if(!data || data.length<=0)
            {
                cb('项目不存在',null);
            }
            else
            {
                cb(null,null);
            }
        });
    }
    function deletes(datas,cb)
    {
        administratorProxy.deleteuser(option,function(err,data){
            if(err)
            {
                cb(err,null);
            }
            else
            {
                cb(null,'删除成功');
            }
        });
    }
}